<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Usuario
 *
 * @author Julio Arredondo
 */
class UsuarioController extends CI_Controller {
    //put your code here


    
    public function create(){
       
       $this->load->model("Usuario_model", "", true);
       try{
           $mensaje = $this->Usuario_model->insert();
           $this->send_password_email($mensaje);
           $exito = true;
       }catch(Exception $e){
           $exito = false;
           $mensaje = $e->getMessage();
       }

       $this->json_response($exito, $mensaje);

    }
    public function tiene_password(){
        $this->load->model("Usuario_model", "", true);
        $email = $this->input->post("email");
        $exito = $this->Usuario_model->has_password($email);
        $this->json_response($exito, "");
    }
    private function send_password_email($id){
        $this->load->library('email');
        $this->email->from('jaarredondo@saludhds.com.mx', 'SCRUM');
        $this->email->to($this->input->post('email'));
        $this->email->subject('Creacion de cuenta de usuario');
        $this->email->message($this->generate_email_message($id));

        $this->email->send();
    
    }
    

    private function generate_email_message($id){
        //TODO: mejorar esto
        $host = "http://".$_SERVER['HTTP_HOST']."/HDS_SCRUM/index.php/";
        $mail_url = $host."UsuarioController/showForm/password/$id";
        $mensaje = "Hemos creado un usuario para ti en SCRUM. Accede a este url para registrar tu password. $mail_url";
        return $mensaje;
    }

    
    public function get($id){
        $this->load->model("Usuario_model");
        $algo = $this->Usuario_model->get($id);
    }

    public function update(){
       $this->load->model("Usuario_model", "", true);
       try{
           $mensaje = $this->Usuario_model->update();
           $exito = true;
       }catch(Exception $e){
           $exito = false;
           $mensaje = $e->getMessage();
       }

       $this->json_response($exito, $mensaje);
    }

    public function set_password($id, $password){
        $this->load->model("Usuario_model", "", true);
        try{
            $this->Usuario_model->set_password($id, $password);
            $exito = true;
            $mensaje = "Password registrado";
        }catch(Exception $e){
            $exito = false;
            $mensaje = $e->getMessage();
        }
        $this->json_response($exito, $mensaje);
    }


    public function delete($id){
        $this->load->model("Usuario_model", "", true);
       try{
           $mensaje = $this->Usuario_model->delete($id);
           $exito = true;
       }catch(Exception $e){
           $exito = false;
           $mensaje = $e->getMessage();
       }

       $this->json_response($exito, $mensaje);
    }

    /***
     * validate_email
     * 
     */
    public function validate_email($email = false){
        
        if(!$email)$email = $this->input->post("email");

        $this->load->model("Usuario_model", "", true);
        $exito = true;
        $mensaje = "Correo inexistente";
        if($this->Usuario_model->exist_mail($email)){
            $mensaje = "Ese correo ya esta registrado";
            $exito = false;
        }
        $this->json_response($exito, $mensaje);
    }

    public function main(){
       
        $this->load->model("Usuario_model", "", true);
        $lista_usuarios = $this->Usuario_model->getAll();
        $this->load->view('usuario');
        if(!empty($lista_usuarios)){
            $this->gui_data($lista_usuarios, "lista_usuarios");//se empaqueta para envio
            $this->load->view('form_usuario_tabla', $this->gui_data);
        }
    }

    public function generar_renglon_tabla($id){
        $this->load->model("Usuario_model", "", true);
        $usuario = $this->Usuario_model->get($id); //definir esto
        $this->gui_data($usuario);
        $this->load->view('form_usuario_renglon', $this->gui_data);
    }

    public function showForm($estado = null, $id = 0){
        switch ($estado) {
            case "update":
                $this->load->model("Usuario_model", "", true);
                $usuario = $this->Usuario_model->get($id); //definir esto
                $this->gui_data($usuario);
                $this->load->view('form_usuario_update', $this->gui_data);
            break;
            case "password":
                $this->load->model("Usuario_model", "", true);
                $usuario = $this->Usuario_model->get($id); //definir esto
                $this->gui_data($usuario, "usuario");
                $this->gui_data(false, "password_anterior");
                $this->load->view('password', $this->gui_data);
            break;
            case "cambiar_password":
                $this->load->model("Usuario_model", "", true);
                $usuario = $this->Usuario_model->get($id); //definir esto
                $this->gui_data($usuario, "usuario");
                $this->gui_data(true, "password_anterior");
                $this->load->view('password', $this->gui_data);
            break;
            case "info":
                $this->load->model("Usuario_model", "", true);
                $usuario = $this->Usuario_model->get($id); //definir esto
                $this->gui_data($usuario);
                $this->load->view('form_usuario_info', $this->gui_data);
            break;
            default:
                $this->load->view('form_usuario');
            break;
        }

    }


    public function confirm_password_by_id($id_usuario, $password){
        try{
            $this->load->model("Usuario_model", "", true);
            $mensaje = $this->Usuario_model->confirm_password_by_id($id_usuario, $password);
            $exito = true;
        }catch(Exception $e){
            $exito = false;
            $mensaje = $e->getMessage();
        }
        $this->json_response($exito, $mensaje);
    }

    
    public function validate_create(){
        //cargar modelo
        $exito = false;
        if($this->validate_email()){
            $mensaje = "El email ya existe";
        }else if($this->validate_login()){
            
        }else{
            $exito = true;
            $mensaje = "Usuario validado correctamente";
        }
        
        $this->json_response($exito, $mensaje);
    }


}
?>
